With increasingly advanced software applications, it becomes increasingly important to optimize the utilization of client capacity, including for example memory capacity, processing capacity, interface capacity etc.
Consider for example a user requesting a complex calculation. If the processor at this time is occupied with updating the graphical interface, or communicating with the network, the calculation might be delayed. When such delays become noticeable to the user, the application is regarded as slow.
Also, consider a user navigating in e.g. a map, requesting information about sites on the map. In order to deliver results fast enough, the application will require a large amount of virtual memory, as the user is free to click anywhere on the map.
Another significant example is caching, especially when the bandwidth is limited. The definition of limited bandwidth depends on the media. For example, video sent over Internet today has limitations, while text is practically without limits, as the download time is usually negligible compared to the time required reading it. Even though the main focus in this text is on mobile devices like phones or PDAs the same techniques could be used at higher bandwidths for other types of media.
There are basically three techniques for caching media content accessed over a data network, e.g. the Internet, on a handheld device.
1) Package Download.
An example of this approach is the AvantGo system, applicable for example with a Palm Pilot device.
The user downloads and stores (caches) a package comprising several media clips, and then navigates among these clips. No Internet connection is required during consumption, as the entire package, with all its media contents, is downloaded and stored in the handheld device. On the other hand, the media experience will be limited to the contents of the downloaded package. It is costly to include extensive media contents, especially if the download is over a mobile communication link.
2) Streaming.
The user receives a continuous stream of media, equivalent to listening to a CD or a radio station. In this case, the client is adapted to download one single media clip, and playback this clip during download.
The simultaneous playback and download is accomplished by caching in the clients memory, and requires an uninterrupted internet connection, preferably a wide band connection. The user has limited ways to control the media experience, at best a one dimensional navigation, i.e. stop, play, back and fast forward.
3) Web Browser Caching
Although primarily used in stationary clients (workstations), web browsing may be implemented in for example a WAP-telephone or a GPRS- or UMTS-device, connected continuously to a network.
While providing the user with a dynamic media experience, browsing has the drawback that contents are only downloaded and cached when the user request them, leading to disturbing delays. An accessed web page (including media files like pictures) will normally be saved on the client for a specified time in order to speed up future access to the same web page. This does not, however, address the problem of delays when requesting new information.
It is clear from the above that an increased dynamics in the media experience (free browsing) is gained only to the price of a unsatisfactory caching procedure, where the caching is always one step behind the user. On the contrary, access without caching interruptions, e.g. wide band streaming or AvantGo type package systems, gives little, if any, dynamics in the media experience. Prior art gives no solution to the problem of providing a satisfying media experience, without regular interruption by caching.
The intelligent download concept, described by the applicant in EP 00850148.8, overcomes the above problem by downloading media contents surrounding the user's current location in a media package structure. Thereby, the user will find himself surrounded by cached media contents, with practically no access time delay. However, when this “dynamic” caching is implemented, there is a problem regarding how to select the media contents to be cached in an optimal way. The client memory is normally restricted, and more importantly, the time required to download the media contents must be inferior to the time required by the user to consume the current article, video clip etc. In order for dynamic caching to be satisfactory, it is necessary to in some way predict the actions of the user. This can be done quite successfully as long as the user remains restricted by the media package structure, but for a satisfying media experience, it is not desired to have the user restricted in this way.